home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-21 / qwhite.zip / APIBRO.TEC < prev    next >
Text File  |  1992-03-09  |  48KB  |  940 lines

  1. ID:AB DESQview API General Information
  2. Quarterdeck Technical Note #211
  3. By Jim Susoy
  4. last revision:  2 March 1992
  5.  
  6. In the Quarterdeck view of the world there are three kinds of DOS programs:
  7.  
  8. There's the DESQview-oblivious program, such as 1-2-3 or AutoCAD, written with 
  9. no consideration of DESQview, but still compatible with DESQview.
  10.  
  11. There's the DESQview-aware program.  It has been modified slightly so that it 
  12. runs efficiently in DESQview and concurrently with other programs.  Paradox, 
  13. DBASE III, DBASE IV, FoxPro, and WordPerfect are DESQview-aware.
  14.  
  15. Then there's the DESQview-specific program, like the DESQview Datebook. It's 
  16. written to take advantage of DESQview's power.  If you look closely, you'll 
  17. discover DESQview behind both the ICL North America and IBM/Tridata point of 
  18. sale systems, US Data's factory control systems, TRW's title insurance system, 
  19. Moody's Investor's Services' bond rating system, FNN's NewsReal and Novell's 
  20. Remote Access Server, to name only a few.
  21.  
  22. Hidden deep inside DESQview 2 is a powerful API (Application Program 
  23. Interface) that lets programs control and interact with DESQview and with 
  24. other programs running in DESQview.  For MIS and DP departments building 
  25. workstation solutions, the DESQview API provides enormous benefits, for it 
  26. brings OS/2 capabilities (and even OS/2 look and feel if desired) to DOS. 
  27. Using the DESQview API, a program can use all the DESQview menu functions 
  28. available to the user as well as the power-packed capabilities built into 
  29. DESQview:  multitasking, windowing, intertask communications, mailboxes, 
  30. shared programs, memory management, mousing, data transfer, menu-building, and 
  31. help.
  32.  
  33. So, DOS programs can now act alone or together.  Either within a window or 
  34. hidden behind one, they can do chores in silence or in chorus, all the while 
  35. utilizing the full power of DESQview, all the while bringing you treasures you 
  36. only dreamed 'til now were possible.
  37.  
  38. A program taking advantage of the DESQview API can display information in 
  39. windows and control the color, dimensions, position, and ordering of windows 
  40. on the screen.  It can disable, limit or enhance the standard DESQview user 
  41. interface, which means that you can have DESQview-like menus in your program, 
  42. or menu bars and pull-down menus, or IBM SAA-like menus.  It can let DESQview 
  43. handle all keyboard and mouse input to menus and forms yet still process 
  44. keyboard and mouse input directly when necessary.  It can schedule processing 
  45. after a certain time interval or at a certain time.  It can spawn subtasks for 
  46. performing background operations such as printing, recalculating, and 
  47. communicating.  It can communicate between the various tasks in the system.
  48.  
  49. MULTITASKING
  50.  
  51. DESQview supports true multitasking of existing DOS programs in addition to 
  52. programs written specifically for DESQview.  So a user can run multiple 
  53. programs (Lotus 1-2-3, DBASE IV and others) and DESQview-specific programs 
  54. (DESQview Datebook, Calculator, your own program) concurrently.  So a user can 
  55. switch to whichever program needs input and switch away while the program 
  56. recalculates or sorts in background.
  57.  
  58. Under DESQview, each program runs in its own "virtual machine", thinking it 
  59. has exclusive access to DOS, the keyboard, etc. DESQview calls these virtual 
  60. machines "processes".  DESQview calls the portion of a process that keeps 
  61. track of which instruction to execute next and what the register contents are 
  62. a "task" (or "thread").  Every program running under DESQview consists, 
  63. initially, of a single process running a single task.
  64.  
  65. DESQview-specific programs may create additional tasks within their own 
  66. processes and additional processes.  Additional tasks allow a portion of your 
  67. program, the part that controls the printer for example, to be run in 
  68. background.  Additional processes allow whole new programs to be loaded and 
  69. run concurrently.
  70.  
  71. PRESENTATION MANAGEMENT
  72.  
  73. Because DESQview lets you run more than one program at a time, DESQview 
  74. provides a way to view more than one program at a time on the screen. DESQview 
  75. does this by mapping each program into its own "window" and by managing the 
  76. display of multiple windows on the screen.  To DESQview, windows are 
  77. rectangular areas of displayable information.  They may be moved, resized, 
  78. colored, and reordered by either the user or by your program.  Everything that 
  79. is displayed on the screen under DESQview is displayed in a window.
  80.  
  81. Multiple windows are not only useful for displaying several programs 
  82. simultaneously, but may also be used within a single program to display menus, 
  83. help screens, error messages.  DESQview provides facilities for storing 
  84. complete descriptions of such windows, (known by DESQview as "panels"), on 
  85. disk or in your program and displaying them with a single call to the API. 
  86. These panels may be as simple as one-line error messages or as complex as data 
  87. entry forms with multiple-choice and data entry fields.
  88.  
  89. Once a panel has been displayed, your program can ask DESQview's "field
  90. manager" to process all user input to the panel including mousing and data
  91. entry editing.  The field manager returns the results to your program in a
  92. simple, field-oriented format, independent of the appearance of the panel.
  93.  
  94. The use of panels and the field manager not only simplifies the job of
  95. programming an application, but gives a consistency to the user interface
  96. that makes the learning of new applications easier.
  97.  
  98. INTERTASK COMMUNICATIONS
  99.  
  100. So that DESQview-specific programs can rapidly exchange information, DESQview
  101. provides a wide range of intertask communications facilities.  These 
  102. facilities allow several concurrently-running tasks to exchange information or 
  103. signals, to lock access to common resources, to share common code and data, 
  104. and to interrupt each other to handle critical events.  These tasks can be in 
  105. either the same or different processes.
  106.  
  107. Intertask communication is the key to building complex applications in a 
  108. multitasking environment.  Let's say, for example, you are building a point of 
  109. sale system, that handles a dozen cash registers for a department store. Using 
  110. DESQview you could break your application up into fourteen tasks:  one for 
  111. each of the cash registers, one to handle access to the pricing data-base and 
  112. one to track sales and generate management reports.  The cash register tasks 
  113. would process keystrokes from the clerk until an item price is needed, they 
  114. would then send a message to the database task requesting the price. The 
  115. database task would log the sale and return the price to the sender of the 
  116. request.  Meanwhile, the store manager could interact with the reporting task 
  117. to monitor sales, clerk performance, etc.
  118.  
  119.  
  120. DATA TRANSFER
  121.  
  122. DESQview supports two types of user-initiated data transfer. The first, called 
  123. Mark & Transfer, lets a user mark text in any window and transfer that text to 
  124. any other application.  The application receiving the data can be DESQview-
  125. oblivious, seeing the data as normal keyboard input.
  126.  
  127. More sophisticated transfers are possible between DESQview-specific 
  128. applications that support the DESQview Scissors command.  When the user marks 
  129. data in such an application, DESQview notifies the application that data has 
  130. been requested and lets the application determine exactly what data to supply. 
  131. The application may supply anything including text, formulas, or even graphics 
  132. images.  When the user instructs DESQview to Paste the data into another 
  133. application, that application is also notified so that the data can be handled 
  134. appropriately.
  135.  
  136. The applications involved in a Scissors transfer can even use DESQview's 
  137. intertask communication facilities to setup a "hot-link" between themselves so 
  138. that subsequent changes to the data are automatically reflected in both 
  139. applications.
  140.  
  141. MEMORY MANAGEMENT
  142.  
  143. Programs running under DOS are typically given all of a PC's memory to do with 
  144. as they please.  In a multitasking environment, memory must be managed so that 
  145. more than one program can be loaded at a time and so that no single program is 
  146. given more memory than it needs.  DESQview provides this management in a way 
  147. that adapts to the type of memory hardware available on your PC.
  148.  
  149. If your PC has 640K of conventional memory, DESQview is able to multitask as 
  150. many programs as will fit in memory at the same time.  Additional programs can 
  151. be loaded but will cause the least recently used programs to be suspended and 
  152. swapped to disk to make room in memory for the new ones. 
  153.  
  154. If your PC is a 286-based system with extended memory only, DESQview can still 
  155. only multitask the programs that fit in 640K.  Additional programs open can be 
  156. swapped either to RAM disk, as well as to the user's local disk or network 
  157. disk.  DESQview is also capable of running 60K of itself in extended memory 
  158. thus reducing its DOS conventional memory overhead. If you have EMS 3.2 (Lotus-
  159. Intel-Microsoft Expanded Memory), DESQview will swap programs to expanded 
  160. memory instead of to disk.  This is so much faster than swapping to disk that 
  161. the swap time is almost not noticeable.
  162.  
  163. If your PC has EMS 4.0 or EEMS (AST-Quadram-Ashton Tate Enhanced Expanded 
  164. Memory) or a 386-based PC with an EMS 4.0 driver, DESQview can actually 
  165. multitask as many programs as will fit in conventional and expanded memory. 
  166. This can be as high as 32-megabytes worth of programs.  DESQview can also run 
  167. a large part of itself in expanded memory, giving a much larger maximum 
  168. program size.
  169.  
  170. Furthermore, DESQview can actually run both 286 or 386 DOS Extended programs 
  171. simultaneously with your other DOS programs. DOS Extended programs are 
  172. programs, such as Lotus 1-2-3 Release 3, IBM Interleaf, AutoCAD 386, Paradox 
  173. 386, which have been written to take advantage of either the 16-bit protected 
  174. mode of the 80286 processor or the 32-bit protected mode of the 80386 
  175. processor.  It is important to note that for DESQview to be able to run DOS 
  176. Extended programs, the DOS Extender must conform to the VCPI (Virtual Control 
  177. Program Interface) specification which specifies how protected mode programs 
  178. and 80386 control programs can work together.  With most DOS Extenders, you 
  179. also get the added benefit of virtual memory support automatically built into 
  180. the program a significant benefit if your users have limited memory.
  181.  
  182. CUSTOMIZATION
  183.  
  184. Although DESQview is best known for its ability to run off-the-shelf software 
  185. concurrently, DESQview is an ideal platform for developing customized vertical 
  186. market applications and workstations. 
  187.  
  188. DESQview's intertask communications and shared program and data capabilities, 
  189. coupled with its support of expanded memory, give developers efficient and 
  190. cost-effective techniques for developing large programs that can still run on 
  191. DOS and thus on the large installed base of DOS PCs.
  192.  
  193. In addition to providing multitasking and windowing services, DESQview can be 
  194. customized to provide the user interface appropriate to a particular 
  195. application.  This customization can take the form of restricting access to 
  196. certain DESQview menus, taking special action when certain menu items are 
  197. selected, or, in the extreme, disabling all access to DESQview menus and 
  198. providing the entire user interface as part of the application. 
  199.  
  200. In this latter case, the only part of DESQview that the user sees is a 
  201. copyright screen during start-up.  DESQview also includes a keystroke macro 
  202. capability enabling you to create built-in macros for each application running 
  203. as well as global macros which combine actions from several programs.
  204.  
  205.  
  206. PORTABILITY
  207.  
  208. DESQview with its entire API runs on 8088, 8086, 80286, 80386 and 80486i PCs 
  209. as well as the IBM Personal System/2s with monochrome, CGA, EGA, VGA or 
  210. Hercules display adapters.  Additionally, Wyse 700 and Micro Display System 
  211. Genius adapters are available from Quarterdeck.  This means that an 
  212. application that you write to be DESQview-specific can run on any PC from a 
  213. laptop dual-floppy PC to the very latest 486-based PC.  It can even run over a 
  214. network on a diskless PC.  Thus, the market for your DESQview-specific 
  215. application extends to the entire base of existing and future DOS PCs. 
  216.  
  217.  
  218. API DETAILS
  219.  
  220. In order for you to get a feel for the power built-in to each and every 
  221. DESQview, we've included a short description about each API command. 
  222.  
  223. The DESQview API is an object-oriented interface.  The data structures 
  224. DESQview uses to represent windows, mailboxes, etc. are called "objects". A 
  225. call to the API involves "sending a message" to an object, indicating which of 
  226. several operations you want performed on that data structure. This is referred 
  227. to as the "send interface."  Almost the entire API consists of sending one of 
  228. 25 messages to one of 7 different object types.
  229.  
  230. The DESQview API also has a non-object-oriented interface called the "direct 
  231. call interface."  This is the small subset of API functions that are not, by 
  232. nature, object-oriented, or that are convenient alternatives to the send 
  233. interface.
  234.  
  235. The DESQview API has a concise way of encoding a complete description of a 
  236. window so that a single call to the API can create the window, fill it with 
  237. the desired information, size and position it on the display, and define 
  238. fields that interact with the user.  All this is done using "Window Streams".
  239.  
  240. So that you can interrogate a window for its current contents, position, etc., 
  241. the DESQview 2 API also has "Query Streams."  In fact, any window parameter 
  242. that can be set by a Window Stream can be read by a Query Stream.
  243.  
  244. DESQview calls the portion of itself that interfaces with the user 
  245. the "Window Manager."  Every time a user presses the DESQ key (normally the 
  246. Alt key) and makes a menu selection, it is the Window Manager that opens, 
  247. switches, rearranges and closes windows, transfers data, displays help, or 
  248. quits DESQview.  In order for an application to have the same power as the 
  249. user, the DESQview API has "Manager Streams."  Manager Streams enable an 
  250. application to interact with the Window Manager. 
  251.  
  252. Using Manager Streams an application can, for example, ask the Window Manager 
  253. to make one of its windows the topmost window in the system, disallow any 
  254. resizing of the window by the user, and even notify the application if the 
  255. user tries to close the window.  Using Manager Streams an application can 
  256. disallow use of the DESQview menu and DESQview sub-menus.
  257.  
  258. But, there's still even more to the DESQview API.  DESQview provides a 
  259. comprehensive set of functions for simplifying the job of interfacing with the 
  260. user.  Instead of dealing with user input a single character at a time, your 
  261. application can present entire menus, dialogue boxes, or help screens to 
  262. DESQview and get back the resulting user input.  Common functions such as 
  263. cursor control, insertion and deletion of characters, tracking the mouse, and 
  264. selection from option lists are performed by DESQview.  DESQview performs 
  265. these functions under control of a data structure called the "Field Table." 
  266. Information about a window's size, position, contents and Field Table can be 
  267. combined together into "Panels."  Panels can be stored on disk or in memory 
  268. for later display.  Panels can be constructed manually or via the DESQview API 
  269. Panel Design Tool.
  270.  
  271.  
  272. DESQVIEW 2 API COMMANDS:
  273.  
  274. Send Interface Commands
  275.  
  276. WINDOW Objects
  277.  
  278. ADDTO     write characters & attributes to a window
  279. AT        position the logical cursor
  280. CONNECT   connect one window to another window
  281. EOF       return TRUE if cursor is past end window
  282. ERASE     clear a window
  283. FREE      close and free a window or a task
  284. HANDLE    return handle of current task's window
  285. LEN       return # characters/line in logical window
  286. NEW       create a new window or task
  287. OPEN      fill a window with a given character
  288. READ      read the next logical line from a window
  289. READN     read the next n characters/attributes
  290. REDRAW    redraw a window
  291. SIZEOF    return total # characters/logical window
  292. SUBFROM   write attributes to a window
  293. WRITE     write characters and/or command streams
  294.  
  295. KEYBOARD Objects
  296.  
  297. ADDTO     set individual keyboard control flags
  298. CLOSE     close a keyboard object
  299. ERASE     discard all input queued to keyboard
  300. FREE      free a keyboard object
  301. GETFLAGS  get keyboard control flags
  302. GETPRI    get objectq priority level of keyboard
  303. HANDLE    return handle of task's default keyboard
  304. NEW       create a new keyboard object
  305. OPEN      attach a keyboard to a window
  306. READ      get the next input from the keyboard
  307. SETESC    intercept keystrokes to input fields
  308. SETFLAGS  set/clear all keyboard control flags
  309. SETPRI    set objectq priority level of keyboard
  310. SIZEOF    return # of input buffers queued
  311. STATUS    get the scan code for the last key read
  312. SUBFROM   clear individual keyboard control flags
  313. WRITE     add input buffer to keyboard queue
  314.  
  315. MAILBOX Objects
  316.  
  317. ADDR      return sender of the last message READ
  318. ADDTO     send a message and status by value
  319. CLOSE     close a mailbox
  320. ERASE     discard all queued messages
  321. FREE      free a mailbox
  322. GETFLAGS  get mailbox control flags
  323. GETPRI    get objectq priority level of mailbox
  324. HANDLE    return handle of task's default mailbox
  325. LOCK      request exclusive access to a resource
  326. NEW       create a new mailbox
  327. OPEN      open a mailbox for input
  328. READ      get the next message from the queue
  329. SETFLAGS  set/clear all mailbox control flags
  330. SETNAME   assign a name to a mailbox
  331. SETPRI    set objectq priority level of mailbox
  332. SIZEOF    return the # of messages in the queue
  333. STATUS    return status of the last message READ
  334. SUBFROM   send a message & status by reference
  335. WRITE     send a message by value with status=0
  336.  
  337. OBJECTQ Objects
  338.  
  339. CLOSE     close an objectq
  340. ERASE     remove all objects from the queue
  341. HANDLE    return the handle of a task's objectq
  342. OPEN      open the objectq
  343. READ      wait for input from any open object
  344. SIZEOF    return the number of objects queued
  345. STATUS    return whether or not objectq is open
  346. SUBFROM   remove specific object from queue
  347. WRITE     add an object to the objectq
  348.  
  349. PANEL Objects
  350.  
  351. APPLY     display a particular panel
  352. CLOSE     close a panel object
  353. DIR       return a pointer to the panel directory
  354. FREE      free a panel object
  355. NEW       create a panel object
  356. OPEN      associate panel object with a panel file
  357. SIZEOF    return the # of panels in a panel file
  358. STATUS    verify success of an OPEN or APPLY
  359.  
  360. POINTER Objects
  361.  
  362. ADDTO     set pointer control flags
  363. CLOSE     stop taking pointer input
  364. ERASE     discard all pointer messages
  365. FREE      free a pointer object
  366. GETFLAGS  get pointer control flags
  367. GETPRI    get objectq priority level of pointer
  368. GETSCALE  return the current scaling factors
  369. NEW       create a new pointer object
  370. OPEN      start taking pointer input for window
  371. READ      wait for the next pointer message
  372. SETFLAGS  replace pointer control flags
  373. SETPRI    set objectq priority level of pointer
  374. SETSCALE  set the current scaling factors
  375. SIZEOF    return the number of messages queued
  376. STATUS    return the status of the last message
  377. SUBFROM   reset pointer control flags
  378. WRITE     move the pointer to a specified position
  379.  
  380. TIMER Objects
  381.  
  382. ADDTO     start a timer for a specified interval
  383. CLOSE     close a timer object
  384. ERASE     cancel the current timer interval
  385. FREE      free a timer object
  386. GETPRI    get objectq priority level of timer
  387. LEN       return time remaining before expiration
  388. NEW       create a new timer object
  389. OPEN      open a timer object
  390. READ      wait for the current timer to expire
  391. SETPRI    set objectq priority level of timer
  392. SIZEOF    return elapsed time since timer started
  393. STATUS    return the status of the timer object
  394. WRITE     start a timer to end at a specified time
  395.  
  396. Direct Call Interface Commands
  397.  
  398. APILEVEL  define minimum API level required
  399. APPNUM    get the current application's number
  400. ASSERTMAP get current mapping context & set new
  401. BEGINC    begin critical region
  402. CSTYLE    use C language style control codes
  403. DBGPOKE   poke debug information onto display
  404. DISPEROR  display an error message window
  405. DVPRESENT determine if DESQview is present
  406. ENDC      end critical region
  407. FINDMAIL  find a mailbox by name
  408. FREEBIT   undefine second-level interrupt handler
  409. GETBIT    define a second-level interrupt handler
  410. GETBUF    get address of a Logical Window Buffer
  411. GETCRIT   get critical region nesting level
  412. GETERROR  get error handling level of current task
  413. GETMEM    allocate buffer from System Memory
  414. ISOBJ     determine if a handle is valid
  415. JUSTIFY   turn off/on automatic justification
  416. KMOUSE    control the keyboard mouse
  417. LOCATE    find window at given screen location
  418. NEWPROC   start a new process
  419. OBJTYPE   determine object type of a given handle
  420. OSTACK    switch to task's internal stack
  421. PAUSE     relinquish control to other tasks
  422. PGMINT    interrupt another task
  423. POSTTASK  awaken task by posting its Objectq
  424. POSWIN    position a window on the display
  425. PRINTC    display a character in a window
  426. PUSHKEY   push key into keyboard input stream
  427. PUTMEM    free a buffer allocated by GETMEM
  428. SETBIT    schedule a second-level interrupt handler
  429. SETERROR  set error handling level of current task
  430. SHADOW    get window buffer and start shadowing
  431. SOUND     make a sound
  432. START     start a task that was previously stopped
  433. STOP      stop a task until START is called
  434. UPDATE    update a portion of a window
  435. USTACK    switch off task's internal stack
  436.  
  437.  
  438. Window Stream & Query Stream Commands
  439.  
  440. 00 to 9F  print strings (attrib,char,blanks) to window
  441.  
  442. A0 to CF  change size/ position of a window
  443.  
  444. D0 to DF  set options for appearance of window:  frames,color,
  445.           show/hide window, display of control characters
  446.  
  447. E0 to EF  perform immediate actions:  clearing,scrolling recoloring,
  448.           redrawing window; create new windows & repeat command sequences
  449.  
  450. F0 to FF  define, read, write fields within window.
  451.  
  452.  
  453. Manager Streams
  454.  
  455. 00 to 3F  Allows specific DESQview commands:
  456.           move & resize window, scroll data, hide
  457.           rearrange program, suspend application, 
  458.           display DESQview menu
  459.  
  460. 40 to 71  notify application on specific DV commands.
  461.  
  462. 84 to 8B  specify environment of window:  suspend
  463.           application when it is in background, set
  464.           application's asynchronous notification.
  465.  
  466. AE to BF  enable/disable DESQview extensions.
  467.  
  468. C0 to FF  reorder, hide, unhide, suspend resume
  469.           applications.
  470.  
  471.  
  472. C, Pascal, BASIC, Clipper & dBASE
  473. Listed below are API Interfaces available with each DESQview API library.
  474.  
  475.  
  476. C - C 
  477. P - Pascal
  478. B - Basic
  479. R - Clipper
  480. D - dBase
  481.  
  482.       General Functions
  483. CPBRD
  484. -----
  485. YYYYY api_beginc       begin critical region 
  486. YYYYY api_cancel       cancel current Window Mgr operation 
  487. YYYY  api_commonmem    get status of Common Memory 
  488. YYYY  api_convenmem    get status of Conventional Memory 
  489.    Y  api_curdrive     get the current default drive 
  490.    Y  api_dec          convert hex string to unsigned decimal # 
  491. YY Y  api_dvpresent    determine if DESQview is present 
  492. YYYYY api_endc         end critical region
  493. YYYY  api_enterc       begin critical region w/o waiting for DOS 
  494. YYYYY api_exit         exit API interface 
  495. YYYY  api_expandmem    get status of Expanded Memory 
  496. YY Y  api_freebit      disconnect 2nd level interrupt handler 
  497. YY Y  api_getbit       define 2nd level interrupt handler 
  498. YYYYY api_getcommon    get Common Memory buffer 
  499. YYYYY api_getcrit      get critical region nesting level 
  500. YYYYY api_getmem       get System Memory buffer 
  501.    Y  api_hex          convert decimal # to hexadecimal string 
  502.    Y  api_hexaddr      convert addr to string in seg:off hex form 
  503. YYYYY api_init         initialize API interface & return version of DESQview 
  504.   Y   api_interactive  determine if in BASIC interactive environment 
  505. YYYYY api_isobj        determine if a given handle is valid 
  506.    Y  api_isset        determine if given bit is set within a specified byte 
  507. YYYYY api_justify      enable/disable automatic justification of task window 
  508. YYYYY api_kmouse       turn keyboard mouse on and off 
  509. YYYYY api_level        define API revision level that application requires 
  510. YYYYY api_objtype      determine object type of a given handle 
  511. YYYYY api_pause        give other tasks a chance to run 
  512. YYYYY api_poke         display debug info on bottom line of screen 
  513. YYYY  api_processmem   get status of app's Process Memory 
  514. YYYYY api_pushkey      push key into input stream 
  515. YYYY  api_putcommon    return Common Memory buffer 
  516. YYYY  api_putkey       put key into an application's input stream 
  517. YYYY  api_putmem       return System Memory buffer 
  518.    Y  api_read         read from DV-owned memory buffer 
  519. YY Y  api_setbit       schedule a 2nd level interrupt handler 
  520. YY Y  api_shadow       get task's logical window buffer & start shadowing 
  521. YYYYY api_sound        make a sound 
  522. YY Y  api_update       redraw portion of a task's logical window 
  523.    Y  api_write        write to DESQview-owned memory buffer
  524.  
  525.  
  526.       Application Management Functions
  527. CPBRD
  528. -----
  529. YYYYY app_foreonly     indicate whether app can run in background 
  530. YYYYY app_free         free an application and its window 
  531. YYYYY app_goback       force an application into background 
  532. YYYYY app_gofore       force an application into foreground 
  533. YYYYY app_hide         hide all windows of an application 
  534. YYYY  app_new          start a new app in the current process 
  535. YYYYY app_number       get the current app's Switch number  
  536.    Y  app_run          execute DOS command in new process 
  537. YYYYY app_show         display all windows of an application 
  538. YYYYY app_start        start a new application in a new process 
  539. YYYYY app_suspend      suspend and hide all tasks in an app
  540.       
  541.       
  542.       Field Management Functions 
  543. CPBRD
  544. -----
  545. YYYYY fld_altmode      set Alternate Field Processing mode 
  546.    Y  fld_atget        input data at specified field position 
  547.    Y  fld_atprompt     paint menu prompts & define msg at fld
  548.    Y  fld_atsay        display data at specified field 
  549. YYYYY fld_attr         fill a field with a given attribute 
  550. YYYYY fld_char         fill a field with a given character 
  551. YYYYY fld_clear        clear a field 
  552. YYYYY fld_cursor       move cursor to a field 
  553. YYYYY fld_entry        change field table entry 
  554. YYYYY fld_header       change field table header 
  555.  YYY  fld_lentry       load field table entry of field table window stream 
  556.  YYY  fld_lheader      load field table header of field table window stream 
  557. YYYYY fld_marker       define selected-field marker character 
  558. YYYYY fld_point        move pointer to a given position in a field 
  559. YYYYY fld_protattr     set Protected Attrib field processing mode  
  560. YYYYY fld_reset        reset selected and modified bits 
  561. YYYYY fld_scroll       scroll a field 
  562.  YYY  fld_stream       allocate string space for field table window stream 
  563. YYYYY fld_type         change the type of a field 
  564. YYYYY fld_write        write a string into a field
  565.       
  566.      
  567.       Keyboard Management Functions 
  568. CPBRD
  569. -----
  570.    Y  key_accept       enter a string into a memory variable 
  571. YYYYY key_addto        set keyboard control flags 
  572.    Y  key_clear        empty keyboard type ahead buffer 
  573.    Y  key_clkey        convert DV key code to Clipper key code 
  574. YYYYY key_close        disconnect keyboard from its window 
  575.    Y  key_dvkey        convert Clipper key code to DV key code 
  576. YYYYY key_erase        discard pending keyboard input 
  577. YYYYY key_free         free a keyboard object 
  578. YYYYY key_getc         wait for next key (keystroke mode) 
  579. YYYYY key_getflags     get keyboard control flags 
  580. YYYYY key_getpri       get priority level of keyboard in objectq 
  581.   YY  key_inkey        read a character from keyboard 
  582.    Y  key_input        enter an expression into a memory variable 
  583.    Y  key_keyboard     stuff keyboard buffer with a string 
  584.    Y  key_lastkey      determine last key fetched from keybd 
  585. YYYYY key_me           get current task's keyboard handle 
  586.    Y  key_nextkey      read the next key from keyboard 
  587. YYYYY key_new          create a new keyboard object 
  588. YYYYY key_of           get handle of a given task's keyboard 
  589. YYYYY key_open         attach keyboard to a given window 
  590. YYYY  key_owner        get owner of a given keyboard 
  591. YYYYY key_read         read input from keyboard 
  592.    Y  key_readinsert   return the current insert mode setting 
  593.    Y  key_readlast     read DV key code in key_lastkey buffer 
  594.    Y  key_setcursor    determine if hardware cursor displayed 
  595. YYYY  key_setesc       define function to filter keys in fld mode 
  596. YYYYY key_setflags     replace keyboard control flags 
  597. YYYYY key_setpri       set priority level of kbd in task's objectq 
  598. YYYYY key_sizeof       get # keyboard messages pending 
  599. YYYYY key_status       get status of last keyboard message 
  600. YYYYY key_subfrom      clear keyboard control flags 
  601.    Y  key_wait         suspend task until a key is pressed 
  602. YYYYY key_write        write string to keyboard 
  603.    Y  key_writelast    write DV key code into 
  604.       
  605.      
  606.       Mailbox Management Functions
  607. CPBRD
  608. -----
  609. YYYYY mal_addr         return sender of last message 
  610. YYYYY mal_addto        send a message by value with given status 
  611. YYYYY mal_close        close a mailbox 
  612. YYYYY mal_erase        erase all pending messages 
  613. YYYYY mal_find         find a mailbox by name 
  614. YYYYY mal_free         free a mailbox object 
  615. YYYY  mal_getflags     get mailbox control flags 
  616. YYYY  mal_getpri       get priority level of mailbox in objectq 
  617. YYYYY mal_lock         lock access to a resource 
  618. YYYYY mal_me           get handle of current task's mailbox 
  619. YYYYY mal_name         assign a global name to a mailbox 
  620. YYYYY mal_new          create a new mailbox 
  621. YYYYY mal_of           get handle of a given task's mailbox 
  622. YYYYY mal_open         open a mailbox 
  623. YYYY  mal_ownerget     owner of a given mailbox 
  624. YYYYY mal_read         wait for next message 
  625. YYYY  mal_setflags     replace mailbox control flags 
  626. YYYY  mal_setpriset    priority level of mailbox in task's objectq 
  627. YYYYY mal_sizeof       get # messages pending 
  628. YYYYY mal_status       get status of last message received 
  629. YYYY  mal_subfrom      send msg by reference w given status 
  630. YYYYY mal_unlock       unlock access to a resource 
  631. YYYYY mal_write        send a message by value with status zero
  632.       
  633.       
  634.       Objectq Management Functions
  635. CPBRD
  636. -----
  637. YYYYY obq_close        close the task's objectq 
  638. YYYYY obq_erase        erase contents of the task's objectq 
  639. YYYYY obq_open         open the task's objectq 
  640. YYYYY obq_read         wait for any object to have input 
  641. YYYYY obq_sizeof       get # of objectq entries pending 
  642. YYYYY obq_status       determine if the task's objectq is open 
  643. YYYYY obq_subfrom      remove copies of object handle from task's objectq 
  644. YYYYY obq_write        add an object handle to task's objectq
  645.       
  646.       
  647.       Panel Management Functions 
  648. CPBRD
  649. -----
  650. YYYYY pan_apply        display a named panel & prepare for input 
  651. YYYYY pan_close        close a panel file 
  652. YYYY  pan_dir          get list of panels in the panel file 
  653. YYYYY pan_free         free a panel object 
  654. YYYYY pan_new          create a panel object 
  655. YYYYY pan_open         open a panel file 
  656. YYYY  pan_owner        get owner of a given panel 
  657. YYYY  pan_sizeof       get # panels in the panel file 
  658. YYYYY pan_status       get status of last pan_open or pan_apply
  659.       
  660.       
  661.       Pointer Management Functions
  662. CPBRD
  663. -----
  664. YYYYY ptr_addto        set pointer control flags 
  665. YYYYY ptr_close        close a pointer object 
  666. YYYYY ptr_erase        erase pending pointer messages 
  667. YYYYY ptr_free         free a pointer object 
  668. YYYYY ptr_getflags     get pointer control flags 
  669. YYYYY ptr_getpri       get priority level of pointer in objectq 
  670. YYYYY ptr_getscale     get current scaling factors 
  671. YYYYY ptr_new          create a new pointer object 
  672. YYYYY ptr_open         open pointer and assign to a window 
  673. YYYY  ptr_owner        get owner of a given pointer 
  674. YYYYY ptr_read         wait for next pointer message 
  675. YYYYY ptr_setflags     replace pointer control flags 
  676. YYYYY ptr_setpri       set priority level of ptr in task's objectq 
  677. YYYYY ptr_setscale     set current scaling factors 
  678. YYYYY ptr_sizeof       get # messages pending 
  679. YYYYY ptr_status       get button status from last message received 
  680. YYYYY ptr_subfrom      clear pointer control flags 
  681. YYYYY ptr_write        move the pointer to a given position
  682.       
  683.       
  684.       Query Functions
  685. CPBRD
  686. -----
  687. YYYYY qry_atread       TRUE if win_read and win_readn will read attributes 
  688. YYYYY qry_attrget      current output attribute 
  689. YY Y  qry_col          get current cursor column position 
  690. YYYYY qry_color        get physical attribute for given logical attribute
  691. YYYYY qry_ctrl         TRUE if processing control codes 
  692. YYYYY qry_cursor       get current cursor position 
  693. YYYY  qry_dosuser      get handle of task currently using DOS 
  694. YYYYY qry_entry        get field table entry 
  695. YYYYY qry_field        get contents of a field 
  696. YYYY  qry_flength      get length of a field 
  697. YYYYY qry_frame        TRUE if the window has a frame 
  698. YYYYY qry_frattr       get current frame attribute 
  699.    Y  qry_ftable       get field table window stream 
  700. YYYYY qry_header       get field table header 
  701. YYYYY qry_hidden       TRUE if the window is hidden 
  702. YYYYY qry_kmouse       TRUE if using a keyboard mouse 
  703. YYYYY qry_leave        TRUE if leaving attributes untouched when writing to     
  704.                        window
  705. YYYYY qry_logattr      TRUE if using logical attributes 
  706. YYYYY qry_lsize        get size of logical window buffer 
  707. YYYYY qry_origin       get origin of physical relative to logical window 
  708. YYYYY qry_position     get position of physical window 
  709. YY Y  qry_row          get current cursor row position 
  710. YYYY  qry_scrninfo     get current size & video mode of screen 
  711. YYYYY qry_size         get size of physical window 
  712. YYYYY qry_title        get window's title 
  713. YYYYY qry_type         get type of field
  714.       
  715.       
  716.       Text File Device Driver Functions
  717. CPBRD
  718. -----
  719.  Y    tfd_attach       attach a given window to TFDD 
  720.  Y    tfd_close        close TFDD 
  721.  Y    tfd_lock         lock access to TFDD 
  722.  Y    tfd_open         open TFDD and attach given window 
  723.  Y    tfd_unlock       unlock access to TFDD
  724.       
  725.       
  726.       Timer Management Functions
  727. CPBRD
  728. -----
  729. YYYYY tim_addto        start a timer for a given interval 
  730. YYYYY tim_close        close a timer object 
  731. YYYYY tim_erase        stop a running timer 
  732. YYYYY tim_freefree     a timer object 
  733. YYYYY tim_getpriget    priority level of timer in objectq 
  734. YYYYY tim_len          get time remaining until timer expires 
  735. YYYYY tim_newcreate    a new timer object 
  736. YYYYY tim_openopen     a timer object 
  737. YYYY  tim_owner        get owner of a given timer 
  738. YYYYY tim_read         wait for timer to expire 
  739. YYYYY tim_setpri       set priority level of timer in task's objectq 
  740. YYYYY tim_sizeofget    time since a timer started running 
  741. YYYYY tim_status       determine if a timer is running 
  742. YYYYY tim_write        start a timer for a given time of day
  743.       
  744.       
  745.       Task Management Functions
  746. CPBRD
  747. -----
  748. YY Y  tsk_dispatchint  software interrupt another task at a "safer" time 
  749. YYYYY tsk_free         free a task and its window 
  750. YYYYY tsk_geterrorget  error handling level of current task 
  751. YYYY  tsk_me           get handle of current task 
  752. YY Y  tsk_new          create a new task 
  753. YY Y  tsk_pgmint       software interrupt another task 
  754. YYYY  tsk_owner        get owner of a given task 
  755. YYYYY tsk_post         restart a task waiting on its objectq 
  756. YYYYY tsk_seterror     set error handling level of current task 
  757. YYYYY tsk_start        restart a stopped task 
  758. YYYYY tsk_stop         temporarily stop a task
  759.       
  760.      
  761.       Window Management Functions 
  762. CPBRD
  763. -----
  764.    Y  win_achoice      execute a pop-up menu in a window 
  765. YYYYY win_addto        write characters & attributes to a window 
  766. YYYYY win_adopt        adopt a window 
  767. YYYYY win_allow        specify which DV commands are allowed 
  768. YY Y  win_async        define asynchronous notify function 
  769.    Y  win_atbox        draw a box in a window 
  770.    Y  win_atclear      clear rectangular region of window 
  771.    Y  win_atget        input data at specified window position 
  772.    Y  win_atprompt     paint menu prompts & define messages of window
  773. YYYYY win_atread       set read mode to read either character or attribute 
  774.    Y  win_atsay        display data at specified window position 
  775. YYYY  win_attach       attach/detach window to parent task window 
  776.    Y  win_atto         draw single or double line box in window 
  777. YYYYY win_attr         set current output attribute 
  778. YYYYY win_blanks       write blanks to a window 
  779. YYYYY win_bottom       make window bottommost in its application
  780.    Y  win_browse       browse & edit records within a window 
  781. YYYY  win_buffer       get address of logical window buffer
  782. YYYYY win_cancel       cancel notification on a given event 
  783.    Y  win_clear        clear a window and home the cursor 
  784.    Y  win_clcolor      convert DESQview physical attribute to Clipper color     
  785.                        code 
  786.    Y  win_cleargets    release all of window's pending gets 
  787.    Y  win_clscroll     scroll window region up, down or blank out 
  788. YYYYY win_color        change logical attribute mapping 
  789. YYYY  win_connect      attach window to another window 
  790. YYYYY win_ctrl         enable/disable interpretation of control characters 
  791. YYYYY win_cursor       move window's logical cursor 
  792.    Y  win_dbedit       browse records in a table layout 
  793. YYYYY win_dflt         change default notify window 
  794. YYYYY win_disallow     specify which DV commands are not allowed 
  795. YYYYY win_disperor     display an error message window 
  796.    Y  win_dvattr       convert Clipper color code to DESQview physical          
  797.                        attribute 
  798. YYYYY win_eof          TRUE if logical cursor is beyond end of window 
  799. YYYYY win_erase        clear a window 
  800. YYYYY win_frame        enable/disable display of a window's frame 
  801. YYYYY win_frattr       define window frame attribute 
  802. YYYYY win_free         remove a window from screen and free its handle 
  803. YYYYY win_hcur         display hardware cursor at logical cursor position
  804. YYYYY win_hide         mark a window as hidden 
  805. YYYYY win_leave        leave existing attribute when writing to window 
  806. YYYYY win_len          return width of logical window 
  807. YYYYY win_locate       return which window is visible at given screen           
  808.                        position 
  809. YYYYY win_logattr      use logical/physical attributes 
  810. YYYYY win_lsize        set window's logical dimensions 
  811.    Y  win_mark1/2      display result of an expression in specified window 
  812. YYYYY win_maxsize      set window's max physical dimensions 
  813. YYYYY win_me           get current task's window handle 
  814.    Y  win_menuto       execute light-bar menu for defined prompts in a window
  815. YYYYY win_minsize      set window's min physical dimensions 
  816. YYYYY win_move         move physical window 
  817. YYYYY win_new          create a new window 
  818. YYYYY win_notify       enable notification on a given event 
  819. YYYYY win_nread        read n characters from a window 
  820. YYYYY win_open         fill a window with a given character 
  821. YYYYY win_origin       define portion of logical window viewed in physical      
  822.                        window
  823. YYYYY win_orphan       orphan a window 
  824. YYYY  win_owner        get owner of a given window 
  825. YYYYY win_paste        define window as current clipboard window 
  826. YYYYY win_point        jump mouse to logical cursor position 
  827. YYYYY win_poswin       position window relative to another window 
  828. YYYYY win_putc         write a character/attribute pair to a window 
  829. YYYYY win_printf       write formatted data to a window 
  830. YYYYY win_read         read rest of current line from window 
  831.    Y  win_readexit     determine whether Up/Down keys exit 
  832.    Y  win_readgets     enter editing mode using pending gets in a window 
  833. YYYYY win_redraw       redraw a window 
  834. YYYY  win_reorder      reorder an application's windows 
  835. YYYYY win_repattr      write an attribute to a window n times 
  836. YYYYY win_repchar      write a character to a window n times 
  837. YYYYY win_resize       set physical dimensions of a window 
  838.    Y  win_restore      display a saved window to a specified window area 
  839.    Y  win_save         save window region to memory variable 
  840. YYYYY win_scroll       scroll all or part of a window 
  841.    Y  win_setbell      determine sounding of bell during win_readgets 
  842.    Y  win_setcenter    determine centering of win_atprompt messages 
  843.    Y  win_setcolor     determine color attributes of window 
  844.    Y  win_setconfirm   determine required win_atget termination with Enter      
  845.                        key 
  846.    Y  win_setescape    determine whether Esc key terminates win_readgets 
  847.    Y  win_setintensity toggle display intensity of win_atget and win_atprompt
  848.    Y  win_setmessage   determine row and centering of win_atprompt messages
  849.    Y  win_setwrap      determine wrapping in win_menuto 
  850. YYYYY win_sizeof       get # character positions in the logical window 
  851. YYYYY win_stream       write a stream to a window 
  852. YYYYY win_subfrom      write attributes to a window 
  853. YYYYY win_title        change a window's title 
  854. YYYYY win_top          make window topmost in its application 
  855. YYYYY win_topsys       make window topmost in the system 
  856. YYYYY win_unhide       mark a window as not hidden 
  857.    Y  win_updated      determine if pending gets changed during last            
  858.                        win_readgets 
  859. YYYYY win_write        write characters to a window
  860.  
  861.  
  862.             YES! I'm Interested In System Development/Performance
  863. ************************************************************************** 
  864. *QTY*5-1/4*3-1/2* Product                                * Price * Total * 
  865. ************************************************************************** 
  866. *   *     *     * DESQview                               *$129.95*$      * 
  867. ************************************************************************** 
  868. *   *     *     * DESQview386 (DESQview & QEMM)          *$219.95*$      * 
  869. ************************************************************************** 
  870. *   *     *     * Quarterdeck Manifest                   *$ 59.95*$      * 
  871. ************************************************************************** 
  872. *   *     *     * QRAM                                   *$ 79.95*$      * 
  873. ************************************************************************** 
  874. *   *     *     * QEMM 50/60                             *$ 99.95*$      * 
  875. ************************************************************************** 
  876. *   *     *     * QEMM 386                               *$ 99.95*$      * 
  877. ************************************************************************** 
  878. *   *     *     * DESQview API Debugger                  *$149.95*$      *  
  879. ************************************************************************** 
  880. *   *     *     * DESQview API Panel Design Tool         *$149.95*$      * 
  881. ************************************************************************** 
  882. *   *     *     * DESQview API Reference                 *$ 59.95*$      * 
  883. ************************************************************************** 
  884. *   *     *     * DESQview API Libraries (C,Pascal,      *       *$      * 
  885. *   *     *     *          Basic,Clipper and dBase)      *$199.95*       * 
  886. *   *     *     *                                        *       *       * 
  887. *   *     *     * Check One:                             *       *       * 
  888. *   *     *     * C( )  Clipper( ) Pascal( ) dBase( )    *       *       * 
  889. *   *     *     * Basic( )                               *       *       * 
  890. ************************************************************************** 
  891. *   *     *     * DESQview API Toolkit (API Reference,   *$500.00*$      * 
  892. *   *     *     *            Library,Panel Design Tool,  *       *       * 
  893. *   *     *     *            Debugger, DESQview)         *       *       * 
  894. *   *     *     *                                        *       *       * 
  895. *   *     *     * Check One:                             *       *       * 
  896. *   *     *     * C( )  Clipper( ) Pascal( ) dBase( )    *       *       * 
  897. *   *     *     * Basic( )                               *       *       * 
  898. ************************************************************************** 
  899. *   *     *     * DESQview by S.R. Davis (book)          *$ 29.95*$      * 
  900. **************************************************************************
  901. ***************** Shipping & Handling                    *********       *
  902. ***************** USA: $5                                *********       *
  903. ***************** Outside USA: $10                       *********$      *
  904. **************************************************************************
  905. ***************** Sales Tax (CA Only @ %8.25)            *********$      *
  906. **************************************************************************
  907. ***************** Amount                                 *$              *
  908. **************************************************************************
  909.                                                           
  910.                                                           
  911. **************************************************************************
  912. * Payment:  M/C VISA AMEX Discover                                       *
  913. **************************************************************************
  914. * Expiration:                                                            *
  915. **************************************************************************
  916. * Card Number:                                                           *
  917. **************************************************************************
  918. * Name on credit card:                                                   *  
  919. **************************************************************************
  920. * Shipping Address:                                                      *
  921. *                                                                        *
  922. *                                                                        *
  923. ************************************************************************** 
  924. * Telephone:                                                             *
  925. **************************************************************************
  926. * Signature:                                                             *
  927. **************************************************************************
  928.                                                                           
  929.  
  930.                          Quarterdeck Office Systems
  931.                    150 Pico Blvd., Santa Monica, CA 90405
  932.                                (310) 314-3222
  933.                              Fax (310) 314-3217
  934.  
  935.   ************************************************************************
  936.   *This technical note may be copied and distributed freely as long as it*
  937.   *is distributed in its entirety and it is not distributed for profit.  *
  938.   *         Copyright (C) 1990-2 by Quarterdeck Office Systems           *
  939.   ************************ E N D   O F   F I L E *************************
  940.